package object3;

/**
 * 匿名内部类练习
 */
public class InnerClassExercise02 {

    public static void main(String[] args) {
        /*
            1)有一个铃声接口Bell，里面有个ring方法
            2)有一个手机类Cellphone，具有闹钟功能alarmClock，参数是Bell类型
            3)测试手机类的闹钟功能，通过匿名内部类（对象）作为参数，打印：懒猪起床了
            4)再传入一个匿名内部类（对象），打印：小伙伴上课了
         */
        Cellphone cellphone = new Cellphone();

        //传递的是实现了Bell接口的匿名内部类 InnerClassExercise02$1
        cellphone.alarmClock(new Bell() {

            @Override
            public void ring() {
                System.out.println("懒猪起床了");
            }

        });

        cellphone.alarmClock(new Bell() {

            @Override
            public void ring() {
                System.out.println("小伙伴上课了");
            }

        });
    }
}

interface Bell {

    public void ring();
}

class Cellphone {

    public void alarmClock(Bell bell) {
        System.out.println(bell.getClass());
        bell.ring();
    }
}
